import request from '@/utils/request';
import { requestWrapper, randomInt } from '@/utils/mock';

// 获取用户手册章节列表
export function getManualChapters() {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/help/manual/chapters',
      method: 'get'
    }),
    // 模拟数据
    [
      {
        id: 'introduction',
        title: '引言',
        sections: []
      },
      {
        id: 'quick-start',
        title: '快速入门',
        sections: [
          { id: 'quick-start-login', title: '登录系统' },
          { id: 'quick-start-interface', title: '主界面介绍' }
        ]
      },
      {
        id: 'user-management',
        title: '用户管理',
        sections: [
          { id: 'user-create', title: '创建用户' },
          { id: 'user-edit', title: '编辑用户信息' },
          { id: 'user-delete', title: '删除用户' }
        ]
      },
      {
        id: 'role-management',
        title: '角色权限管理',
        sections: [
          { id: 'role-create', title: '创建角色' },
          { id: 'role-permission', title: '分配权限' }
        ]
      },
      {
        id: 'system-settings',
        title: '系统设置',
        sections: [
          { id: 'system-config', title: '系统参数配置' },
          { id: 'system-dict', title: '字典管理' }
        ]
      }
    ]
  );
}

// 获取用户手册内容
export function getManualContent(chapterId) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: `/help/manual/content/${chapterId}`,
      method: 'get'
    }),
    // 模拟数据
    () => {
      const chapters = {
        'introduction': {
          id: 'introduction',
          title: '引言',
          content: '<h2>引言</h2><p>欢迎使用通用后台管理系统，本手册将指导您如何使用系统的各项功能。</p>',
          sections: []
        },
        'quick-start': {
          id: 'quick-start',
          title: '快速入门',
          content: '<h2>快速入门</h2><p>本章将指导您如何快速上手使用系统的基本功能。</p>',
          sections: [
            {
              id: 'quick-start-login',
              title: '登录系统',
              content: '<h3>登录系统</h3><p>访问系统登录页面，输入您的用户名和密码，点击"登录"按钮即可登录系统。如果您忘记了密码，可以点击"忘记密码"链接进行密码重置。</p>'
            },
            {
              id: 'quick-start-interface',
              title: '主界面介绍',
              content: '<h3>主界面介绍</h3><p>系统主界面分为顶部导航栏、左侧菜单栏和主内容区域。顶部导航栏包含系统标题、全局搜索、消息通知、用户信息等；左侧菜单栏包含系统的主要功能模块；主内容区域显示当前操作的具体内容。</p>'
            }
          ]
        },
        'user-management': {
          id: 'user-management',
          title: '用户管理',
          content: '<h2>用户管理</h2><p>本章将指导您如何管理系统用户，包括创建、编辑、删除用户等操作。</p>',
          sections: [
            {
              id: 'user-create',
              title: '创建用户',
              content: '<h3>创建用户</h3><p>在用户列表页面，点击"新增"按钮，填写用户信息表单，包括用户名、密码、用户角色等信息，点击"确定"按钮即可创建新用户。</p>'
            },
            {
              id: 'user-edit',
              title: '编辑用户信息',
              content: '<h3>编辑用户信息</h3><p>在用户列表页面，点击用户行的"编辑"按钮，修改用户信息，点击"确定"按钮保存修改。</p>'
            },
            {
              id: 'user-delete',
              title: '删除用户',
              content: '<h3>删除用户</h3><p>在用户列表页面，选择要删除的用户，点击"删除"按钮，确认后即可删除选中的用户。</p>'
            }
          ]
        }
      };
      
      return chapters[chapterId] || {
        id: chapterId,
        title: '未找到内容',
        content: '<h2>未找到内容</h2><p>抱歉，未找到请求的章节内容。</p>',
        sections: []
      };
    }
  );
}

// 搜索用户手册
export function searchManual(params) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/help/manual/search',
      method: 'get',
      params
    }),
    // 模拟数据
    () => {
      const keyword = params.keyword || '';
      if (!keyword) {
        return [];
      }
      
      return [
        {
          chapterId: 'user-management',
          sectionId: 'user-create',
          title: '创建用户',
          content: '在用户列表页面，点击"新增"按钮，填写用户信息表单...',
          matchPosition: `在用户列表页面，点击"<em>${keyword}</em>"按钮...`
        },
        {
          chapterId: 'role-management',
          sectionId: 'role-permission',
          title: '分配权限',
          content: '在角色管理页面，点击"权限分配"按钮...',
          matchPosition: `在角色管理页面，点击"权限分配"按钮，可以为角色分配<em>${keyword}</em>权限...`
        }
      ];
    }
  );
}

// 获取FAQ分类
export function getFaqCategories() {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/help/faq/categories',
      method: 'get'
    }),
    // 模拟数据
    [
      {
        id: 'account',
        name: '账号问题',
        icon: 'User',
        questionCount: 3
      },
      {
        id: 'system',
        name: '系统使用',
        icon: 'Setting',
        questionCount: 4
      },
      {
        id: 'permission',
        name: '权限问题',
        icon: 'Lock',
        questionCount: 2
      },
      {
        id: 'data',
        name: '数据管理',
        icon: 'DataLine',
        questionCount: 5
      },
      {
        id: 'other',
        name: '其他问题',
        icon: 'More',
        questionCount: 3
      }
    ]
  );
}

// 获取FAQ问题列表
export function getFaqList(params) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/help/faq/list',
      method: 'get',
      params
    }),
    // 模拟数据
    () => {
      const pageNum = params?.pageNum || 1;
      const pageSize = params?.pageSize || 10;
      const total = 17; // 模拟总数
      
      const faqList = [
        {
          id: '1',
          categoryId: 'account',
          title: '如何重置密码？',
          content: '<p>如果您忘记了密码，可以通过以下方式重置：</p><ol><li>点击登录页面的"忘记密码"链接</li><li>输入您的用户名和注册邮箱</li><li>系统将发送重置密码链接到您的邮箱</li><li>点击链接并设置新密码</li></ol>',
          updateTime: '2023-05-15',
          views: 1258,
          helpful: null
        },
        {
          id: '2',
          categoryId: 'system',
          title: '如何修改个人资料？',
          content: '<p>修改个人资料的步骤如下：</p><ol><li>点击右上角的用户头像</li><li>在下拉菜单中选择"个人中心"</li><li>在个人资料页面点击"编辑"按钮</li><li>修改相关信息并点击"保存"</li></ol>',
          updateTime: '2023-05-16',
          views: 965,
          helpful: null
        },
        {
          id: '3',
          categoryId: 'permission',
          title: '为什么我无法访问某些功能？',
          content: '<p>如果您无法访问某些功能，可能是由于权限设置问题：</p><ol><li>您当前的角色可能没有该功能的访问权限</li><li>该功能可能处于维护状态</li><li>系统管理员可能临时禁用了该功能</li></ol><p>如果您确认需要使用该功能，请联系系统管理员为您分配相应权限。</p>',
          updateTime: '2023-05-17',
          views: 879,
          helpful: null
        }
      ];
      
      // 模拟分页
      const startIndex = (pageNum - 1) * pageSize;
      const endIndex = Math.min(startIndex + pageSize, total);
      const list = Array.from({ length: endIndex - startIndex }, (_, i) => {
        const index = startIndex + i;
        if (index < faqList.length) {
          return faqList[index];
        } else {
          return {
            id: `${index + 1}`,
            categoryId: ['account', 'system', 'permission', 'data', 'other'][randomInt(0, 4)],
            title: `常见问题 ${index + 1}`,
            content: `<p>这是常见问题 ${index + 1} 的详细内容。</p><p>包含了多段落的详细说明和解决方案。</p>`,
            updateTime: `2023-${randomInt(1, 12).toString().padStart(2, '0')}-${randomInt(1, 28).toString().padStart(2, '0')}`,
            views: randomInt(100, 2000),
            helpful: null
          };
        }
      });
      
      return {
        list,
        total,
        pageNum: parseInt(pageNum),
        pageSize: parseInt(pageSize)
      };
    }
  );
}

// 获取FAQ问题详情
export function getFaqDetail(faqId) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: `/help/faq/${faqId}`,
      method: 'get'
    }),
    // 模拟数据
    () => {
      const faqs = {
        '1': {
          id: '1',
          categoryId: 'account',
          title: '如何重置密码？',
          content: '<p>如果您忘记了密码，可以通过以下方式重置：</p><ol><li>点击登录页面的"忘记密码"链接</li><li>输入您的用户名和注册邮箱</li><li>系统将发送重置密码链接到您的邮箱</li><li>点击链接并设置新密码</li></ol>',
          updateTime: '2023-05-15',
          views: 1259,
          helpfulCount: 45,
          unhelpfulCount: 3
        },
        '2': {
          id: '2',
          categoryId: 'system',
          title: '如何修改个人资料？',
          content: '<p>修改个人资料的步骤如下：</p><ol><li>点击右上角的用户头像</li><li>在下拉菜单中选择"个人中心"</li><li>在个人资料页面点击"编辑"按钮</li><li>修改相关信息并点击"保存"</li></ol>',
          updateTime: '2023-05-16',
          views: 966,
          helpfulCount: 38,
          unhelpfulCount: 2
        }
      };
      
      if (faqs[faqId]) {
        return faqs[faqId];
      }
      
      return {
        id: faqId,
        categoryId: ['account', 'system', 'permission', 'data', 'other'][randomInt(0, 4)],
        title: `常见问题 ${faqId}`,
        content: `<p>这是常见问题 ${faqId} 的详细内容。</p><p>包含了多段落的详细说明和解决方案。</p><h3>问题原因</h3><p>这里描述了问题的产生原因和背景。</p><h3>解决方案</h3><p>这里提供了详细的解决步骤和注意事项。</p>`,
        updateTime: `2023-${randomInt(1, 12).toString().padStart(2, '0')}-${randomInt(1, 28).toString().padStart(2, '0')}`,
        views: randomInt(100, 2000),
        helpfulCount: randomInt(5, 50),
        unhelpfulCount: randomInt(0, 10)
      };
    }
  );
}

// 提交问题反馈
export function submitFaqFeedback(data) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/help/faq/feedback',
      method: 'post',
      data
    }),
    // 模拟数据
    {
      success: true
    }
  );
}

// 提交新问题
export function submitNewQuestion(data) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/help/feedback',
      method: 'post',
      data
    }),
    // 模拟数据
    {
      feedbackId: Date.now()
    }
  );
}

// 获取用户常见问题
export function getHotFaq(params) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/help/faq/hot',
      method: 'get',
      params
    }),
    // 模拟数据
    [
      {
        id: '1',
        title: '如何重置密码？',
        views: 1259
      },
      {
        id: '2',
        title: '如何修改个人资料？',
        views: 966
      },
      {
        id: '3',
        title: '为什么我无法访问某些功能？',
        views: 879
      },
      {
        id: '4',
        title: '如何导出数据报表？',
        views: 743
      },
      {
        id: '5',
        title: '如何设置系统参数？',
        views: 687
      }
    ]
  );
}

// 获取最新系统公告
export function getLatestNotices(params) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/help/notices',
      method: 'get',
      params
    }),
    // 模拟数据
    [
      {
        noticeId: 1,
        noticeTitle: '系统升级通知',
        noticeType: '1',
        createTime: '2023-05-25 10:00:00'
      },
      {
        noticeId: 2,
        noticeTitle: '新功能发布公告',
        noticeType: '2',
        createTime: '2023-05-26 10:00:00'
      },
      {
        noticeId: 3,
        noticeTitle: '系统维护通知',
        noticeType: '1',
        createTime: '2023-06-01 15:30:00'
      },
      {
        noticeId: 4,
        noticeTitle: '操作指南更新',
        noticeType: '2',
        createTime: '2023-06-05 09:15:00'
      },
      {
        noticeId: 5,
        noticeTitle: '重要安全更新提醒',
        noticeType: '1',
        createTime: '2023-06-10 16:45:00'
      }
    ].slice(0, params?.limit || 5)
  );
} 